#pragma once

#include <util_order.h>

typedef struct {
	u32_s max;
	u32_s min;
} max_min_u32_t;

// 同时计算n1与n2的较大者和较小者（两者都是uint32型）
static inline max_min_u32_t sm_max_min_u32(u32_s n1, u32_s n2) {
	order_t order = get_order(n1, n2, n1 > n2);
	max_min_u32_t result = {
		.max = order.left,
		.min = order.right,
	};
	return result;
}

// 计算n1与n2的较大者（两者都是uint32型）
static inline u32_s sm_max_u32(u32_s n1, u32_s n2) {
	max_min_u32_t max_min = sm_max_min_u32(n1, n2);
	return max_min.max;
}

// 计算n1与n2的较小者（两者都是uint32型）
static inline u32_s sm_min_u32(u32_s n1, u32_s n2) {
	max_min_u32_t max_min = sm_max_min_u32(n1, n2);
	return max_min.min;
}
